package com.songshuai.webapi.permission.dao;

import com.songshuai.webapi.permission.dto.po.FunctionListQueryPojo;
import com.songshuai.webapi.permission.dto.request.NavigationRelateFunctionReqDto;
import com.songshuai.webapi.permission.dto.response.NavigationListResDto;
import com.songshuai.webapi.permission.model.YxNavigations;
import com.songshuai.webapi.permission.model.YxRolesNavigations;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface YxNavigationsMapper {

    //根据appId查询所有一级菜单列表（超级管理员）
    List<NavigationListResDto> queryAdminParentNavigationList(@Param("appId")Integer appId);

    //根据appid查询所有一级菜单列表
    List<NavigationListResDto> queryParentNavigationList(@Param("userId")Integer userId,@Param("appId")Integer appId);

    //根据appid查询所有非一级菜单列表（超级管理员）
    List<NavigationListResDto> queryAdminAllChildNavigationList(@Param("appId")Integer appId);

    //根据appid查询所有非一级菜单列表
    List<NavigationListResDto> queryAllChildNavigationList(@Param("userId")Integer userId,@Param("appId")Integer appId);

    //根据id查询菜单
    YxNavigations queryNavigationById(@Param("id") Integer id);

    //新增菜单
    int addNavigation(YxNavigations entity);

    //修改菜单
    int updateNavigation(YxNavigations entity);

    //根据id获取该菜单下所有子菜单
    List<Integer> queryChildIdList(@Param("id") Integer id);

    //删除菜单角色关联
    int deleteNavRoleRelation(@Param("navigationId")Integer navigationId);

    //根据id删除菜单
    int deleteNavigationById(@Param("id") Integer id);

    //查询功能列表并根据菜单id返填
    List<FunctionListQueryPojo> queryFunctionListByNav(@Param("navigationId")Integer navigationId, @Param("appId")Integer appId);

    //删除菜单功能用户关系，不在这些功能列表之内的
    int deleteNavUserFuncRelation(NavigationRelateFunctionReqDto reqDto);

    //删除菜单功能角色关系，不在这些功能列表之内的
    int deleteNavRoleFuncRelation(NavigationRelateFunctionReqDto reqDto);

    //关联功能
    int relateFunction(@Param("loginId")Integer loginId,@Param("reqDto")NavigationRelateFunctionReqDto reqDto);
}
